<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //js中自定义对象  通常用来封装页面上类似于一个对象的数据
        /*
        定义对象：
        var 对象名 = {
            属性名:属性值,
            属性名:属性值,
            属性名:属性值,
           ...
        函数(){}
        }
        */



        //1.简单定义对象的方式 字面量定义
        var zhubajie = {
            id:"悟能",
            name:'猪八戒',
            age:45,
            address:"高老庄",

            doWork:function(ji){
                alert("取经..."+ji);
            },
            play:function(){
                alert("调戏嫦娥...");
            }
        }

        //访问对象中的结构
        //访问属性   对象.属性
        console.log(zhubajie.name);
        zhubajie.age=38;
        console.log(zhubajie.age);


        //调用方法 对象.方法()
        // zhubajie.play();
        // zhubajie.doWork("大悲咒");


        //自定义对象细节
        //有一个变量  存储了姓名的值
        var name = "悟能001";

        
        var zhubajie01 = {
            id:"悟能",
            //name的值是变量里的值 完全写法
            // name:name,
            //es6标准中 如果对象的属性名和属性值一摸一样  可以写一个
            name,
            age:45,
            address:"高老庄",

            //函数的写法
            //完全写法
            /* doWork:function(ji){
                alert("取经..."+ji);
            },
            play:function(){
                alert("调戏嫦娥...");
            } */
            //es6提出简写方法 省略:funcation
            doWork(ji){
                alert("取经..."+ji);
            },
            play(){
                alert("调戏嫦娥...");
            }
        }



        //2.定义对象的方法2 补充 定义构造函数创建对象  * 
        function SunWuKong(name){
            this.name = name;
            this.method = function(){
                console.log("打妖怪");
            };
        }

        //通过构造函数创建对象
        var newWuKong = new SunWuKong("猴头");
        console.log('新对象',newWuKong);
        newWuKong.method();


        //3.定义自定义对象方法3  es6类的语法  *
        //定义一个类
        class MySunWuKong{
           // 属性
            name = "悟空";
            age = 18;

           //方法
           eat(){
                console.log("吃东西");
           }

           //构造方法
           constructor(name,age){
                this.name = name;
                this.age = age;
            }

        }

        var xiaohouzi = new MySunWuKong("小猴子",15)
        console.log(xiaohouzi);
        xiaohouzi.eat();
        console.log(xiaohouzi.age)



    



    </script>
</head>

<body>

</body>

</html>